package com.fxm.client;

import com.fxm.config.feign.UserFeignConfig;
import com.fxm.domain.User;
import com.fxm.returns.RespEntity;
import com.fxm.returns.RespTable;
import com.fxm.vo.param.LoginParam;
import java.util.List;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @author fxm
 * @version V1.0.0
 * @description: 用户管理 feign调用
 * @date 2021/02/04 09:29
 */
@FeignClient(name = "userFeignClient", url = "${manage.url}", configuration = UserFeignConfig.class)
public interface UserClient {

    /**
     * 后台管理登陆接口
     * @param loginParam
     * @return
     */
    @PostMapping("/user/login")
    RespEntity<User> login(@RequestBody LoginParam loginParam);

    /**
     * 用户列表
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/user/list")
    RespTable<List<User>> queryAllUser(@RequestParam("page") Integer page,
                                       @RequestParam("limit") Integer limit);

    /**
     * 搜索用户
     * @param page
     * @param limit
     * @param column
     * @param value
     * @return
     */
    @GetMapping("/user/list")
    RespTable<List<User>> searchUser(@RequestParam("page") Integer page,
                                     @RequestParam("limit") Integer limit,
                                     @RequestParam("column") String column,
                                     @RequestParam("value") String value);

    /**
     * 用户地区分布-中国地图
     */
    @GetMapping("/user/chinaMap")
    RespEntity chinaMap(@RequestParam("beginDate") String beginDate,
                        @RequestParam("endDate") String endDate);

    /**
     * 用户地区分布-省份地图
     */
    @GetMapping("/user/provinceMap")
    RespEntity provinceMap(@RequestParam("province") String province,
                           @RequestParam("beginDate") String beginDate,
                           @RequestParam("endDate") String endDate);

    /**
     * 短信验证码
     */
    @GetMapping("/user/send")
    RespEntity<Integer> sendSms(@RequestParam("mobile") String mobile);

    /**
     * 按照ids获取用户列表
     * @param ids
     * @return
     */
    @GetMapping("/user/queryUserByIds")
    RespEntity<List<User>> queryUserByIds(@RequestParam("ids") Integer[] ids);

    /**
     * 获取所有用户
     * @return
     */
    @GetMapping("/user/allUser")
    RespEntity<List<User>> allUser();

    /**
     * 封禁用户
     * @param id
     * @return
     */
    @PostMapping("/user/ban")
    RespEntity banUser(@RequestParam("id") Integer id);

    /**
     * 用户性别统计
     * @return
     */
    @GetMapping("/user/sex")
    RespEntity sexCount();

    /**
     * 用户黑名单列表
     * @return
     */
    @GetMapping("/user/blacklist")
    RespTable<List<User>> blackList(@RequestParam("page") Integer page,
                                    @RequestParam("limit") Integer limit);

    /**
     * 用户解封
     * @param id
     * @return
     */
    @PostMapping("/user/unseal")
    RespEntity unseal(@RequestParam("id") Integer id);

}
